package com.approval.mapper;

import com.approval.entity.ApprovalInstance;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 审批实例Mapper接口
 */
@Mapper
public interface ApprovalInstanceMapper {
    
    /**
     * 插入审批实例
     */
    int insert(ApprovalInstance instance);
    
    /**
     * 根据ID删除审批实例
     */
    int deleteById(Long id);
    
    /**
     * 更新审批实例
     */
    int update(ApprovalInstance instance);
    
    /**
     * 根据ID查询审批实例
     */
    ApprovalInstance selectById(Long id);
    
    /**
     * 根据流程实例ID查询审批实例
     */
    ApprovalInstance selectByProcessInstanceId(String processInstanceId);
    
    /**
     * 查询所有审批实例
     */
    List<ApprovalInstance> selectAll();
    
    /**
     * 根据用户ID查询审批实例
     */
    List<ApprovalInstance> selectByUserId(Long userId);
    
    /**
     * 根据流程ID查询审批实例
     */
    List<ApprovalInstance> selectByProcessId(Long processId);
    
    /**
     * 根据状态查询审批实例
     */
    List<ApprovalInstance> selectByStatus(String status);
    
    /**
     * 根据流程ID和状态查询审批实例
     */
    List<ApprovalInstance> selectByProcessIdAndStatus(@Param("processId") Long processId, @Param("status") String status);
}
